package com.un.ebs.core.metadata;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.un.ebs.core.enums.ServiceTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 用于描述 Controller 的数据结构
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ServiceInfo implements Serializable {

    /**
     * 指 Controller 的 class.FullName
     */
    public String name;

    public String url;

    /**
     * 指 Controller 的描述，取自 @Api 的 description
     */
    public String description;

    @JsonIgnore
    public String typeName;

    /**
     * 服务类型
     */
    public ServiceTypeEnum serviceType;

    /**
     * 该服务是否为动态服务，即由数据库的视图对象、函数对象生成而来
     */
    public Boolean isDynamic = false;

    /**
     * 指 Controller 中每个指定了 @RequestMapping 的 Class.Method
     */
    @JsonIgnore
    public List<FunctionInfo> functions;


    public ServiceInfo(String name, String url, String desc, String typeName, List<FunctionInfo> funs) {
        this.name = name;
        this.url = url;
        this.description = desc;
        this.typeName = typeName;
        this.functions = funs;
    }
}
